package com.libre.workflow.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.libre.common.vo.PageVo;
import com.libre.workflow.vo.*;

import java.util.List;
import java.util.Map;

/**
 * @author 庞留杰
 * @version V1.0
 * @description 流程任务
 * @date 2020/9/11 18:01
 **/
public interface MyTaskService {

    /**
     * 功能描述: 查询申请（查询我发起的流程实例）【对应表：act_hi_procinst 历史的流程实例表】
     */
    Page apply(PageVo pageVo, MyApplyVo applyVo);

    /**
     * 根据用户ID或者用户组ID，查询该用户代办，查询该用户代办数量
     */
    long count(String userId, List<String> groupIds);

    /**
     * 根据用户ID或者用户组ID，查询该用户待办
     */
    Page backlog(PageVo pageVo, MyBacklogVo backlogVo);

    /**
     * 功能描述: 查询已办任务【对应表：act_hi_taskinst】
     */
    Page finished(PageVo pageVo, MyFinishedVo finishedVo);

    /**
     * 执行任务
     */
    Map<String, Object> executeTask(MyExecuteVo executeVo);
//
//    /**
//     * 查询任务
//     * */
//    JSONArray findTask(TaskListQuery taskListQuery);

    /**
     * @description 添加备注信息
     **/
    void addComments(MyCommentVo commentVo);
//
//    /**
//     * @description 添加备注信息 （不需要taskId）
//     **/
//    void addComments2(CommentAddQuery commentAddQuery);
//
//    /**
//     * @description 查询备注信息
//     **/
//    List<Comment> findCommentList(String processInstanceId);
//
//    /**
//     * 功能描述: 获取所有可回退的节点
//     */
//    Map<String, Object> getFallbackNode(String processInstanceId);
//
//    /**
//     * 功能描述: 获取所有可回退的节点
//     *          规则：
//     *          1.从历史获取所有审批过的节点信息
//     *          2.通过开始时间排序，去除历史中重复的节点
//     */
//    Map<String, Object> getFallbackNode2(String processInstanceId);
//
//    /**
//     * 功能描述: 获取所有可回退的节点
//     *          规则：
//     *              从历史获取所有审批过的节点信息
//     *              带分页
//     */
//    Map<String, Object> getFallbackNode3(String processInstanceId, PageVo pageVo);
//
//
//    /**
//     * 功能描述: 任务撤回【注意：当前与目标定义Key为设计模板时任务对应的ID(通常格式：sid-xxxxxxxxxxxxxxxxx),而非数据主键ID】
//     */
//    void withdraw(TaskFallbackQuery taskFallbackQuery);
//
//    /**
//     * 功能描述: 退回上一步，注意只能回退一步【例： 当前在“第三步”：
//     *                              调用一次，回退到“第二步”，
//     *                              再次调用，回退到“第三步”，
//     *                              再次调用，回退到“第二步”，
//     *                                以此类推。。。。
//     *           】
//     */
//    Map<String, String> rollback(String processInstanceId);
//

    /**
     * 功能描述: 审批历史记录, 查看任务执行的详情【对应表：act_hi_actinst历史节点表】
     */
    Page records(PageVo pageVo, MyRecordsVo recordsVo);
//
//    String getTaskIdByProcessInstanceId(String processInstanceId);
}
